<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		闭包：
		为什么用闭包：全局变量可以任何地方使用，但是容易被污染
		             私有变量只能自己作用域里使用，不容易被污染
					 
					 闭包是：私有变量（引用类型）被外面所使用，又不会被污染
					 所以闭包的作用就是保护保存
					 
		闭包缺点：外面使用私有作用域里面变量，导致私有作用域得不到释放
		解决：
		     外面使用的变量=null
		<script>
			let x = 3,
				obj = {
					x: 5
				};
				
			obj.fn = (function() {
				this.x *= ++x;
				return function(y) {
					this.x *= (++x) + y;
					console.log(x);
				}
			})();

			let fn = obj.fn;
			obj.fn(6);
			fn(4);
			console.log(obj.x, x, window.x);
		</script>
	</body>
</html>
